//
//  ZSStatusCell.swift
//  ZSWeibo
//
//  Created by zsj1992 on 16/4/12.
//  Copyright © 2016年 ichange. All rights reserved.
//





import UIKit
import SnapKit

class ZSStatusCell: UITableViewCell {

    //拿一个约束对象保存底部工具条的约束
    var bottomBarTopCons:Constraint?
    
    //给cell一个viewModel
    var statusViewModel:ZSStatusViewModel?{
        
        didSet{

            //cell把viewModel传给原创微博视图
            statusOriginalView?.statusViewModel = statusViewModel
            
            statusBootomBar?.statusViewModel = statusViewModel

            
            //先卸载bootom的约束
            self.bottomBarTopCons?.uninstall()
            
            //判断是转发微博的就把转发微博的viewModel传给转发的视图
            if statusViewModel?.status?.retweeted_status != nil{
            
                statusRetweetedView?.statusViewModel = statusViewModel

                statusBootomBar?.snp_updateConstraints(closure: { (make) -> Void in
                    bottomBarTopCons = make.top.equalTo((statusRetweetedView?.snp_bottom)!).offset(ZSStatusCellMargin).constraint

                    
                statusRetweetedView?.hidden = false
                    
                })
                
                
            }else{
            
            statusRetweetedView?.statusViewModel = nil

            statusBootomBar?.snp_makeConstraints(closure: { (make) -> Void in
                
                self.bottomBarTopCons = make.top.equalTo((statusOriginalView?.snp_bottom)!).offset(ZSStatusCellMargin).constraint
                
            })
                statusRetweetedView?.hidden = true
                statusRetweetedView?.statusViewModel = nil

            }
            
            
        }
    }

    //视图的属性一般用计算型属性
    
    //原创微博视图
   lazy var statusOriginalView:ZSStatusOriginalView?=ZSStatusOriginalView()
    
    //转发的微博的视图
   lazy var statusRetweetedView:ZSStatusRetweetedView?=ZSStatusRetweetedView()
    
    //底部的工具条
   lazy var statusBootomBar : ZSBottomBar?=ZSBottomBar()
    
   //配图视图
   lazy var pictureView : ZSStatusPictureView?=ZSStatusPictureView()
   
    
    override func layoutSubviews() {
       
        super.layoutSubviews()
        
    }
    
    

    

    //MARK:初始化方法
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: .Default, reuseIdentifier: "statusCell")

        //原创微博视图
        self.contentView.addSubview(statusOriginalView!)

        //转发微博视图
        self.contentView.addSubview(statusRetweetedView!)

        //底部的工具条
        self.contentView.addSubview(statusBootomBar!)

        
        setupUI()
        
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }


}



extension ZSStatusCell{

    func setupUI(){
    
        /**设置原创微博的约束*/
        statusOriginalView?.snp_makeConstraints(closure: { (make) -> Void in
    
        make.left.top.right.equalTo(contentView)

        })
        
        /*设置转发微博的约束*/
        statusRetweetedView?.snp_makeConstraints(closure: { (make) -> Void in

            make.left.right.equalTo(contentView)
            make.top.equalTo((statusOriginalView?.snp_bottom)!).constraint
        })
        
        
        
        /**设置底部的工具条的约束*/
        statusBootomBar?.snp_makeConstraints(closure: { (make) -> Void in
        
        make.height.equalTo(18)

        make.left.right.equalTo(contentView)
        
        self.bottomBarTopCons = make.top.equalTo((statusRetweetedView?.snp_bottom)!).offset(ZSStatusCellMargin).constraint

        })
        
        
        
        
        
        /*设置contentView的约束*/
        contentView.snp_makeConstraints { (make) -> Void in
            //其他的几个约束也需要同时添加 不然contentView只知道底部在哪个地方
            make.left.right.top.equalTo(self)
            make.bottom.equalTo(statusBootomBar!.snp_bottom)
        }

    
    
    
    
    }
}
































//import UIKit
//import SnapKit
//
//class ZSStatusCell: UITableViewCell {
//    
//    //工具条的顶部的约束对象
//    var toolBarTopCons: Constraint?
//    
//    
//    var statusViewModel: ZSStatusViewModel? {
//        didSet {
////            print(statusViewModel?.status?.pic_urls?.count)
////            print(statusViewModel?.status?.retweeted_status?.pic_urls?.count)
//            
//            
//            originalView.statusViewModel = statusViewModel
//            statusToolBar.statusViewModel = statusViewModel
//            
//            //判断是否是转发微博 修改底部toolbar顶部的约束
//            //放置cell复用  snp_updateConstraints: 如果约束存在就更新,约束不存在就创建
//            
//            
//            
//            
//            //在更新约束之前先 卸载toolbar顶部的约束  先记录顶部约束
//            self.toolBarTopCons?.uninstall()
//            
//            
//            if statusViewModel?.status?.retweeted_status != nil {
//                //转发微博
//                //修改约束
//                statusToolBar.snp_updateConstraints(closure: { (make) -> Void in
//                    self.toolBarTopCons = make.top.equalTo(retweetedView.snp_bottom).constraint
//                })
//                //显示转发微博
//                retweetedView.hidden = false
//                //设置数据源
//                retweetedView.statusViewModel = statusViewModel
//            }
//                
//                
//                
//                
//                
//                //不是转发微博的处理
//                
//            else {
//                //原创微博
//                //修改约束
//                statusToolBar.snp_updateConstraints(closure: { (make) -> Void in
//                    self.toolBarTopCons = make.top.equalTo(originalView.snp_bottom).constraint
//                })
//                //隐藏转发微博
//                retweetedView.hidden = true
//                //设置数据源
//                retweetedView.statusViewModel = nil
//            }
//        }
//    }
//    
//    
//    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
//        super.init(style: .Default, reuseIdentifier: reuseIdentifier)
//        setupUI()
//        //设置cell选中的背景色
//        selectionStyle = .None
//    }
//    
//    required init?(coder aDecoder: NSCoder) {
//        fatalError("init(coder:) has not been implemented")
//    }
//    
//    
//    
//    
//    
//    
//    
//    
//    
//    
//    
//    //MARK: 设置界面
//    private func setupUI() {
//        //        backgroundColor = randomColor()
//        //添加子视图
//        contentView.addSubview(originalView)
//        contentView.addSubview(retweetedView)
//        contentView.addSubview(statusToolBar)
//        
//        
//        //设置约束
//        originalView.snp_makeConstraints { (make) -> Void in
//            make.left.right.top.equalTo(contentView)
//            //先设置测试高度
//            //            make.height.equalTo(100)
//        }
//        
//        //添加约束 线让可能存在的视图在这个占位 等获取了数据之后再动态调整
//        retweetedView.snp_makeConstraints { (make) -> Void in
//            make.top.equalTo(originalView.snp_bottom)
//            make.left.right.equalTo(contentView)
//            //            make.height.equalTo(80)
//        }
//        statusToolBar.snp_makeConstraints { (make) -> Void in
//            //constraint 添加约束 并且记录约束对象
//            self.toolBarTopCons = make.top.equalTo(retweetedView.snp_bottom).constraint
//            make.left.right.equalTo(contentView)
//            make.height.equalTo(36)
//        }
//        
//        //添加contentView的底部约束
//        // snp_makeConstraints  - make 屏蔽了frame布局
//        contentView.snp_makeConstraints { (make) -> Void in
//            //其他的几个约束也需要同时添加 不然contentView只知道底部在哪个地方
//            make.left.right.top.equalTo(self)
//            make.bottom.equalTo(statusToolBar.snp_bottom)
//        }
//        
//    }
//    
//    //懒加载子视图控件
//    private lazy var originalView: ZSStatusOriginalView = ZSStatusOriginalView()
//    private lazy var retweetedView: ZSStatusRetweetedView = ZSStatusRetweetedView()
//    private lazy var statusToolBar: ZSBottomBar = ZSBottomBar()
//}


